<?php

declare(strict_types=1);

namespace ImiApp\ApiServer\Api\Model\Base;

use Imi\Config\Annotation\ConfigValue;
use Imi\Model\Annotation\Column;
use Imi\Model\Annotation\DDL;
use Imi\Model\Annotation\Entity;
use Imi\Model\Annotation\Table;
use ImiApp\ImiServer\AbstractModel as Model;

/**
 * 优惠券 基类.
 *
 * @Entity(camel=false, bean=true, incrUpdate=false)
 * @Table(name=@ConfigValue(name="@app.models.ImiApp\ApiServer\Api\Model\Coupons.name", default="fa_coupons"), usePrefix=false, id={"id"}, dbPoolName=@ConfigValue(name="@app.models.ImiApp\ApiServer\Api\Model\Coupons.poolName"))
 * @DDL(sql="CREATE TABLE `fa_coupons` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL COMMENT '名称',
  `type` enum('cash','discount') NOT NULL DEFAULT 'cash' COMMENT '类型:cash=代金券,discount=折扣券',
  `type_status` enum('1','2','3','4','5','6','7','8') NOT NULL DEFAULT '1' COMMENT '类型:1=满减卷,2=复购卷,3=分享卷,4=抵扣卷,5=引流卷,6=商品卷,7=领劵中心卷',
  `status` enum('up','halt','down') DEFAULT 'up' COMMENT '状态:up=上架,halt=暂停,down=下架',
  `goods_ids` varchar(1200) DEFAULT NULL COMMENT '适用商品',
  `jian` decimal(10,2) DEFAULT '0.00' COMMENT '券面额',
  `deduct` decimal(10,2) DEFAULT NULL COMMENT '每次可抵扣(次卡)',
  `return_shell` decimal(10,2) DEFAULT '0.00' COMMENT '返回贝壳',
  `man` decimal(10,2) DEFAULT '0.00' COMMENT '消费门槛',
  `stock` int(11) DEFAULT '0' COMMENT '库存',
  `limit` int(11) DEFAULT '1' COMMENT '每人限制',
  `gettime` varchar(50) DEFAULT NULL COMMENT '领取周期',
  `day` int(10) DEFAULT '0' COMMENT '有效期天',
  `hour` int(10) DEFAULT '0' COMMENT '小时',
  `min` int(10) DEFAULT '0' COMMENT '分钟',
  `repeat` int(10) unsigned DEFAULT NULL COMMENT '复购次数',
  `s` int(10) unsigned DEFAULT '0' COMMENT '秒',
  `description` varchar(255) DEFAULT NULL COMMENT '描述',
  `createtime` int(11) DEFAULT NULL COMMENT '创建时间',
  `updatetime` int(11) DEFAULT NULL COMMENT '更新时间',
  `deletetime` int(11) DEFAULT NULL COMMENT '删除时间',
  `usetimestart` int(11) DEFAULT NULL COMMENT '使用开始时间',
  `usetimeend` int(11) DEFAULT NULL COMMENT '使用结束时间',
  `gettimestart` int(11) DEFAULT NULL,
  `gettimeend` int(11) DEFAULT NULL,
  `store_id` int(10) unsigned DEFAULT '0' COMMENT '店铺ID',
  `give_status` enum('1','2') DEFAULT '1' COMMENT '赠送:1=不支持,2=支持',
  `get_status` enum('1','2') DEFAULT '2' COMMENT '领取状态:1=店铺指定,2=都可领取',
  `mix_status` enum('1','2') DEFAULT '2' COMMENT '混合付:1=不支持,2=支持',
  `scene` enum('current','auction','groupon','rice','direct','scan') DEFAULT 'current' COMMENT '场景:current=通用,auction=拍卖,groupon=拼团,rice=米市,direct=直接付,scan=扫码付',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优惠券'", decode="")
 *
 * @property int|null $id 
 * @property string|null $name 名称
 * @property string|null $type 类型:cash=代金券,discount=折扣券
 * @property string|null $typeStatus 类型:1=满减卷,2=复购卷,3=分享卷,4=抵扣卷,5=引流卷,6=商品卷,7=领劵中心卷
 * @property string|null $status 状态:up=上架,halt=暂停,down=下架
 * @property string|null $goodsIds 适用商品
 * @property string|float|int|null $jian 券面额
 * @property string|float|int|null $deduct 每次可抵扣(次卡)
 * @property string|float|int|null $returnShell 返回贝壳
 * @property string|float|int|null $man 消费门槛
 * @property int|null $stock 库存
 * @property int|null $limit 每人限制
 * @property string|null $gettime 领取周期
 * @property int|null $day 有效期天
 * @property int|null $hour 小时
 * @property int|null $min 分钟
 * @property int|null $repeat 复购次数
 * @property int|null $s 秒
 * @property string|null $description 描述
 * @property int|null $createtime 创建时间
 * @property int|null $updatetime 更新时间
 * @property int|null $deletetime 删除时间
 * @property int|null $usetimestart 使用开始时间
 * @property int|null $usetimeend 使用结束时间
 * @property int|null $gettimestart 
 * @property int|null $gettimeend 
 * @property int|null $storeId 店铺ID
 * @property string|null $giveStatus 赠送:1=不支持,2=支持
 * @property string|null $getStatus 领取状态:1=店铺指定,2=都可领取
 * @property string|null $mixStatus 混合付:1=不支持,2=支持
 * @property string|null $scene 场景:current=通用,auction=拍卖,groupon=拼团,rice=米市,direct=直接付,scan=扫码付
 */
abstract class CouponsBase extends Model
{
    /**
     * {@inheritdoc}
     */
    public const PRIMARY_KEY = 'id';

    /**
     * {@inheritdoc}
     */
    public const PRIMARY_KEYS = ["id"];

    /**
     * id.
     * @Column(name="id", type="int", length=11, accuracy=0, nullable=false, default="", isPrimaryKey=true, primaryKeyIndex=0, isAutoIncrement=true, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $id = NULL;

    /**
     * 获取 id.
     *
     * @return int|null
     */
    public function getId(): ?int
    {
        return $this->id;
    }

    /**
     * 赋值 id.
     * @param int|null $id id
     * @return static
     */
    public function setId($id)
    {
        $this->id = null === $id ? null : (int)$id;
        return $this;
    }

    /**
     * 名称.
     * name
     * @Column(name="name", type="varchar", length=50, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $name = NULL;

    /**
     * 获取 name - 名称.
     *
     * @return string|null
     */
    public function getName(): ?string
    {
        return $this->name;
    }

    /**
     * 赋值 name - 名称.
     * @param string|null $name name
     * @return static
     */
    public function setName($name)
    {
        $this->name = null === $name ? null : (string)$name;
        return $this;
    }

    /**
     * 类型:cash=代金券,discount=折扣券.
     * type
     * @Column(name="type", type="enum", length=0, accuracy=0, nullable=false, default="cash", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $type = 'cash';

    /**
     * 获取 type - 类型:cash=代金券,discount=折扣券.
     *
     * @return string|null
     */
    public function getType(): ?string
    {
        return $this->type;
    }

    /**
     * 赋值 type - 类型:cash=代金券,discount=折扣券.
     * @param string|null $type type
     * @return static
     */
    public function setType($type)
    {
        $this->type = null === $type ? null : (string)$type;
        return $this;
    }

    /**
     * 类型:1=满减卷,2=复购卷,3=分享卷,4=抵扣卷,5=引流卷,6=商品卷,7=领劵中心卷.
     * type_status
     * @Column(name="type_status", type="enum", length=0, accuracy=0, nullable=false, default="1", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $typeStatus = '1';

    /**
     * 获取 typeStatus - 类型:1=满减卷,2=复购卷,3=分享卷,4=抵扣卷,5=引流卷,6=商品卷,7=领劵中心卷.
     *
     * @return string|null
     */
    public function getTypeStatus(): ?string
    {
        return $this->typeStatus;
    }

    /**
     * 赋值 typeStatus - 类型:1=满减卷,2=复购卷,3=分享卷,4=抵扣卷,5=引流卷,6=商品卷,7=领劵中心卷.
     * @param string|null $typeStatus type_status
     * @return static
     */
    public function setTypeStatus($typeStatus)
    {
        $this->typeStatus = null === $typeStatus ? null : (string)$typeStatus;
        return $this;
    }

    /**
     * 状态:up=上架,halt=暂停,down=下架.
     * status
     * @Column(name="status", type="enum", length=0, accuracy=0, nullable=true, default="up", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $status = 'up';

    /**
     * 获取 status - 状态:up=上架,halt=暂停,down=下架.
     *
     * @return string|null
     */
    public function getStatus(): ?string
    {
        return $this->status;
    }

    /**
     * 赋值 status - 状态:up=上架,halt=暂停,down=下架.
     * @param string|null $status status
     * @return static
     */
    public function setStatus($status)
    {
        $this->status = null === $status ? null : (string)$status;
        return $this;
    }

    /**
     * 适用商品.
     * goods_ids
     * @Column(name="goods_ids", type="varchar", length=1200, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $goodsIds = NULL;

    /**
     * 获取 goodsIds - 适用商品.
     *
     * @return string|null
     */
    public function getGoodsIds(): ?string
    {
        return $this->goodsIds;
    }

    /**
     * 赋值 goodsIds - 适用商品.
     * @param string|null $goodsIds goods_ids
     * @return static
     */
    public function setGoodsIds($goodsIds)
    {
        $this->goodsIds = null === $goodsIds ? null : (string)$goodsIds;
        return $this;
    }

    /**
     * 券面额.
     * jian
     * @Column(name="jian", type="decimal", length=10, accuracy=2, nullable=true, default="0.00", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|float|int|null
     */
    protected $jian = NULL;

    /**
     * 获取 jian - 券面额.
     *
     * @return string|float|int|null
     */
    public function getJian()
    {
        return $this->jian;
    }

    /**
     * 赋值 jian - 券面额.
     * @param string|float|int|null $jian jian
     * @return static
     */
    public function setJian($jian)
    {
        $this->jian = null === $jian ? null : $jian;
        return $this;
    }

    /**
     * 每次可抵扣(次卡).
     * deduct
     * @Column(name="deduct", type="decimal", length=10, accuracy=2, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|float|int|null
     */
    protected $deduct = NULL;

    /**
     * 获取 deduct - 每次可抵扣(次卡).
     *
     * @return string|float|int|null
     */
    public function getDeduct()
    {
        return $this->deduct;
    }

    /**
     * 赋值 deduct - 每次可抵扣(次卡).
     * @param string|float|int|null $deduct deduct
     * @return static
     */
    public function setDeduct($deduct)
    {
        $this->deduct = null === $deduct ? null : $deduct;
        return $this;
    }

    /**
     * 返回贝壳.
     * return_shell
     * @Column(name="return_shell", type="decimal", length=10, accuracy=2, nullable=true, default="0.00", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|float|int|null
     */
    protected $returnShell = NULL;

    /**
     * 获取 returnShell - 返回贝壳.
     *
     * @return string|float|int|null
     */
    public function getReturnShell()
    {
        return $this->returnShell;
    }

    /**
     * 赋值 returnShell - 返回贝壳.
     * @param string|float|int|null $returnShell return_shell
     * @return static
     */
    public function setReturnShell($returnShell)
    {
        $this->returnShell = null === $returnShell ? null : $returnShell;
        return $this;
    }

    /**
     * 消费门槛.
     * man
     * @Column(name="man", type="decimal", length=10, accuracy=2, nullable=true, default="0.00", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|float|int|null
     */
    protected $man = NULL;

    /**
     * 获取 man - 消费门槛.
     *
     * @return string|float|int|null
     */
    public function getMan()
    {
        return $this->man;
    }

    /**
     * 赋值 man - 消费门槛.
     * @param string|float|int|null $man man
     * @return static
     */
    public function setMan($man)
    {
        $this->man = null === $man ? null : $man;
        return $this;
    }

    /**
     * 库存.
     * stock
     * @Column(name="stock", type="int", length=11, accuracy=0, nullable=true, default="0", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $stock = 0;

    /**
     * 获取 stock - 库存.
     *
     * @return int|null
     */
    public function getStock(): ?int
    {
        return $this->stock;
    }

    /**
     * 赋值 stock - 库存.
     * @param int|null $stock stock
     * @return static
     */
    public function setStock($stock)
    {
        $this->stock = null === $stock ? null : (int)$stock;
        return $this;
    }

    /**
     * 每人限制.
     * limit
     * @Column(name="limit", type="int", length=11, accuracy=0, nullable=true, default="1", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $limit = 1;

    /**
     * 获取 limit - 每人限制.
     *
     * @return int|null
     */
    public function getLimit(): ?int
    {
        return $this->limit;
    }

    /**
     * 赋值 limit - 每人限制.
     * @param int|null $limit limit
     * @return static
     */
    public function setLimit($limit)
    {
        $this->limit = null === $limit ? null : (int)$limit;
        return $this;
    }

    /**
     * 领取周期.
     * gettime
     * @Column(name="gettime", type="varchar", length=50, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $gettime = NULL;

    /**
     * 获取 gettime - 领取周期.
     *
     * @return string|null
     */
    public function getGettime(): ?string
    {
        return $this->gettime;
    }

    /**
     * 赋值 gettime - 领取周期.
     * @param string|null $gettime gettime
     * @return static
     */
    public function setGettime($gettime)
    {
        $this->gettime = null === $gettime ? null : (string)$gettime;
        return $this;
    }

    /**
     * 有效期天.
     * day
     * @Column(name="day", type="int", length=10, accuracy=0, nullable=true, default="0", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $day = 0;

    /**
     * 获取 day - 有效期天.
     *
     * @return int|null
     */
    public function getDay(): ?int
    {
        return $this->day;
    }

    /**
     * 赋值 day - 有效期天.
     * @param int|null $day day
     * @return static
     */
    public function setDay($day)
    {
        $this->day = null === $day ? null : (int)$day;
        return $this;
    }

    /**
     * 小时.
     * hour
     * @Column(name="hour", type="int", length=10, accuracy=0, nullable=true, default="0", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $hour = 0;

    /**
     * 获取 hour - 小时.
     *
     * @return int|null
     */
    public function getHour(): ?int
    {
        return $this->hour;
    }

    /**
     * 赋值 hour - 小时.
     * @param int|null $hour hour
     * @return static
     */
    public function setHour($hour)
    {
        $this->hour = null === $hour ? null : (int)$hour;
        return $this;
    }

    /**
     * 分钟.
     * min
     * @Column(name="min", type="int", length=10, accuracy=0, nullable=true, default="0", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $min = 0;

    /**
     * 获取 min - 分钟.
     *
     * @return int|null
     */
    public function getMin(): ?int
    {
        return $this->min;
    }

    /**
     * 赋值 min - 分钟.
     * @param int|null $min min
     * @return static
     */
    public function setMin($min)
    {
        $this->min = null === $min ? null : (int)$min;
        return $this;
    }

    /**
     * 复购次数.
     * repeat
     * @Column(name="repeat", type="int", length=10, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=true, virtual=false)
     * @var int|null
     */
    protected ?int $repeat = NULL;

    /**
     * 获取 repeat - 复购次数.
     *
     * @return int|null
     */
    public function getRepeat(): ?int
    {
        return $this->repeat;
    }

    /**
     * 赋值 repeat - 复购次数.
     * @param int|null $repeat repeat
     * @return static
     */
    public function setRepeat($repeat)
    {
        $this->repeat = null === $repeat ? null : (int)$repeat;
        return $this;
    }

    /**
     * 秒.
     * s
     * @Column(name="s", type="int", length=10, accuracy=0, nullable=true, default="0", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=true, virtual=false)
     * @var int|null
     */
    protected ?int $s = 0;

    /**
     * 获取 s - 秒.
     *
     * @return int|null
     */
    public function getS(): ?int
    {
        return $this->s;
    }

    /**
     * 赋值 s - 秒.
     * @param int|null $s s
     * @return static
     */
    public function setS($s)
    {
        $this->s = null === $s ? null : (int)$s;
        return $this;
    }

    /**
     * 描述.
     * description
     * @Column(name="description", type="varchar", length=255, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $description = NULL;

    /**
     * 获取 description - 描述.
     *
     * @return string|null
     */
    public function getDescription(): ?string
    {
        return $this->description;
    }

    /**
     * 赋值 description - 描述.
     * @param string|null $description description
     * @return static
     */
    public function setDescription($description)
    {
        $this->description = null === $description ? null : (string)$description;
        return $this;
    }

    /**
     * 创建时间.
     * createtime
     * @Column(name="createtime", type="int", length=11, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $createtime = NULL;

    /**
     * 获取 createtime - 创建时间.
     *
     * @return int|null
     */
    public function getCreatetime(): ?int
    {
        return $this->createtime;
    }

    /**
     * 赋值 createtime - 创建时间.
     * @param int|null $createtime createtime
     * @return static
     */
    public function setCreatetime($createtime)
    {
        $this->createtime = null === $createtime ? null : (int)$createtime;
        return $this;
    }

    /**
     * 更新时间.
     * updatetime
     * @Column(name="updatetime", type="int", length=11, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $updatetime = NULL;

    /**
     * 获取 updatetime - 更新时间.
     *
     * @return int|null
     */
    public function getUpdatetime(): ?int
    {
        return $this->updatetime;
    }

    /**
     * 赋值 updatetime - 更新时间.
     * @param int|null $updatetime updatetime
     * @return static
     */
    public function setUpdatetime($updatetime)
    {
        $this->updatetime = null === $updatetime ? null : (int)$updatetime;
        return $this;
    }

    /**
     * 删除时间.
     * deletetime
     * @Column(name="deletetime", type="int", length=11, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $deletetime = NULL;

    /**
     * 获取 deletetime - 删除时间.
     *
     * @return int|null
     */
    public function getDeletetime(): ?int
    {
        return $this->deletetime;
    }

    /**
     * 赋值 deletetime - 删除时间.
     * @param int|null $deletetime deletetime
     * @return static
     */
    public function setDeletetime($deletetime)
    {
        $this->deletetime = null === $deletetime ? null : (int)$deletetime;
        return $this;
    }

    /**
     * 使用开始时间.
     * usetimestart
     * @Column(name="usetimestart", type="int", length=11, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $usetimestart = NULL;

    /**
     * 获取 usetimestart - 使用开始时间.
     *
     * @return int|null
     */
    public function getUsetimestart(): ?int
    {
        return $this->usetimestart;
    }

    /**
     * 赋值 usetimestart - 使用开始时间.
     * @param int|null $usetimestart usetimestart
     * @return static
     */
    public function setUsetimestart($usetimestart)
    {
        $this->usetimestart = null === $usetimestart ? null : (int)$usetimestart;
        return $this;
    }

    /**
     * 使用结束时间.
     * usetimeend
     * @Column(name="usetimeend", type="int", length=11, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $usetimeend = NULL;

    /**
     * 获取 usetimeend - 使用结束时间.
     *
     * @return int|null
     */
    public function getUsetimeend(): ?int
    {
        return $this->usetimeend;
    }

    /**
     * 赋值 usetimeend - 使用结束时间.
     * @param int|null $usetimeend usetimeend
     * @return static
     */
    public function setUsetimeend($usetimeend)
    {
        $this->usetimeend = null === $usetimeend ? null : (int)$usetimeend;
        return $this;
    }

    /**
     * gettimestart.
     * @Column(name="gettimestart", type="int", length=11, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $gettimestart = NULL;

    /**
     * 获取 gettimestart.
     *
     * @return int|null
     */
    public function getGettimestart(): ?int
    {
        return $this->gettimestart;
    }

    /**
     * 赋值 gettimestart.
     * @param int|null $gettimestart gettimestart
     * @return static
     */
    public function setGettimestart($gettimestart)
    {
        $this->gettimestart = null === $gettimestart ? null : (int)$gettimestart;
        return $this;
    }

    /**
     * gettimeend.
     * @Column(name="gettimeend", type="int", length=11, accuracy=0, nullable=true, default="", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var int|null
     */
    protected ?int $gettimeend = NULL;

    /**
     * 获取 gettimeend.
     *
     * @return int|null
     */
    public function getGettimeend(): ?int
    {
        return $this->gettimeend;
    }

    /**
     * 赋值 gettimeend.
     * @param int|null $gettimeend gettimeend
     * @return static
     */
    public function setGettimeend($gettimeend)
    {
        $this->gettimeend = null === $gettimeend ? null : (int)$gettimeend;
        return $this;
    }

    /**
     * 店铺ID.
     * store_id
     * @Column(name="store_id", type="int", length=10, accuracy=0, nullable=true, default="0", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=true, virtual=false)
     * @var int|null
     */
    protected ?int $storeId = 0;

    /**
     * 获取 storeId - 店铺ID.
     *
     * @return int|null
     */
    public function getStoreId(): ?int
    {
        return $this->storeId;
    }

    /**
     * 赋值 storeId - 店铺ID.
     * @param int|null $storeId store_id
     * @return static
     */
    public function setStoreId($storeId)
    {
        $this->storeId = null === $storeId ? null : (int)$storeId;
        return $this;
    }

    /**
     * 赠送:1=不支持,2=支持.
     * give_status
     * @Column(name="give_status", type="enum", length=0, accuracy=0, nullable=true, default="1", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $giveStatus = '1';

    /**
     * 获取 giveStatus - 赠送:1=不支持,2=支持.
     *
     * @return string|null
     */
    public function getGiveStatus(): ?string
    {
        return $this->giveStatus;
    }

    /**
     * 赋值 giveStatus - 赠送:1=不支持,2=支持.
     * @param string|null $giveStatus give_status
     * @return static
     */
    public function setGiveStatus($giveStatus)
    {
        $this->giveStatus = null === $giveStatus ? null : (string)$giveStatus;
        return $this;
    }

    /**
     * 领取状态:1=店铺指定,2=都可领取.
     * get_status
     * @Column(name="get_status", type="enum", length=0, accuracy=0, nullable=true, default="2", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $getStatus = '2';

    /**
     * 获取 getStatus - 领取状态:1=店铺指定,2=都可领取.
     *
     * @return string|null
     */
    public function getGetStatus(): ?string
    {
        return $this->getStatus;
    }

    /**
     * 赋值 getStatus - 领取状态:1=店铺指定,2=都可领取.
     * @param string|null $getStatus get_status
     * @return static
     */
    public function setGetStatus($getStatus)
    {
        $this->getStatus = null === $getStatus ? null : (string)$getStatus;
        return $this;
    }

    /**
     * 混合付:1=不支持,2=支持.
     * mix_status
     * @Column(name="mix_status", type="enum", length=0, accuracy=0, nullable=true, default="2", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $mixStatus = '2';

    /**
     * 获取 mixStatus - 混合付:1=不支持,2=支持.
     *
     * @return string|null
     */
    public function getMixStatus(): ?string
    {
        return $this->mixStatus;
    }

    /**
     * 赋值 mixStatus - 混合付:1=不支持,2=支持.
     * @param string|null $mixStatus mix_status
     * @return static
     */
    public function setMixStatus($mixStatus)
    {
        $this->mixStatus = null === $mixStatus ? null : (string)$mixStatus;
        return $this;
    }

    /**
     * 场景:current=通用,auction=拍卖,groupon=拼团,rice=米市,direct=直接付,scan=扫码付.
     * scene
     * @Column(name="scene", type="enum", length=0, accuracy=0, nullable=true, default="current", isPrimaryKey=false, primaryKeyIndex=-1, isAutoIncrement=false, unsigned=false, virtual=false)
     * @var string|null
     */
    protected ?string $scene = 'current';

    /**
     * 获取 scene - 场景:current=通用,auction=拍卖,groupon=拼团,rice=米市,direct=直接付,scan=扫码付.
     *
     * @return string|null
     */
    public function getScene(): ?string
    {
        return $this->scene;
    }

    /**
     * 赋值 scene - 场景:current=通用,auction=拍卖,groupon=拼团,rice=米市,direct=直接付,scan=扫码付.
     * @param string|null $scene scene
     * @return static
     */
    public function setScene($scene)
    {
        $this->scene = null === $scene ? null : (string)$scene;
        return $this;
    }

}
